[INFO] cloning repository https://github.com/Aurailus/Scout
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Aurailus/Scout" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAurailus%2FScout", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAurailus%2FScout'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d98d3bd8ed942b763cc3ecba8de258e333dacfa9
[INFO] fixing Aurailus/Scout against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAurailus%2FScout" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Aurailus/Scout
[INFO] finished tweaking git repo https://github.com/Aurailus/Scout
[INFO] tweaked toml for git repo https://github.com/Aurailus/Scout written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Aurailus/Scout on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Aurailus/Scout already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] b1dc48ed9a2286378993c8c35b15d3c27c74806181e9cae1e7a4c1730be6c6f3
[INFO] running `Command { std: "docker" "start" "b1dc48ed9a2286378993c8c35b15d3c27c74806181e9cae1e7a4c1730be6c6f3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b1dc48ed9a2286378993c8c35b15d3c27c74806181e9cae1e7a4c1730be6c6f3" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b1dc48ed9a2286378993c8c35b15d3c27c74806181e9cae1e7a4c1730be6c6f3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b1dc48ed9a2286378993c8c35b15d3c27c74806181e9cae1e7a4c1730be6c6f3" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating core/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating app/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating plugins/application/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating plugins/directory/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Compiling proc-macro2 v1.0.26
[INFO] [stderr]    Compiling unicode-xid v0.2.2
[INFO] [stderr]    Compiling syn v1.0.72
[INFO] [stderr]    Compiling serde_derive v1.0.125
[INFO] [stderr]    Compiling serde v1.0.125
[INFO] [stderr]    Compiling unicode-segmentation v1.7.1
[INFO] [stderr]    Compiling pkg-config v0.3.19
[INFO] [stderr]    Compiling version-compare v0.0.10
[INFO] [stderr]    Compiling strum v0.18.0
[INFO] [stderr]    Compiling version_check v0.9.3
[INFO] [stderr]    Compiling libc v0.2.94
[INFO] [stderr]    Compiling memchr v2.4.0
[INFO] [stderr]    Compiling proc-macro-hack v0.5.19
[INFO] [stderr]    Compiling bitflags v1.2.1
[INFO] [stderr]    Compiling proc-macro-nested v0.1.7
[INFO] [stderr]     Checking futures-sink v0.3.14
[INFO] [stderr]     Checking futures-core v0.3.14
[INFO] [stderr]     Checking futures-channel v0.3.14
[INFO] [stderr]     Checking slab v0.4.3
[INFO] [stderr]     Checking pin-project-lite v0.2.6
[INFO] [stderr]    Compiling anyhow v1.0.40
[INFO] [stderr]     Checking futures-task v0.3.14
[INFO] [stderr]     Checking pin-utils v0.1.0
[INFO] [stderr]     Checking futures-io v0.3.14
[INFO] [stderr]    Compiling either v1.6.1
[INFO] [stderr]     Checking once_cell v1.7.2
[INFO] [stderr]    Compiling ryu v1.0.5
[INFO] [stderr]    Compiling gio v0.9.1
[INFO] [stderr]    Compiling gdk-pixbuf v0.9.0
[INFO] [stderr]    Compiling pango v0.9.1
[INFO] [stderr]    Compiling itertools v0.9.0
[INFO] [stderr]    Compiling lexical-core v0.7.6
[INFO] [stderr]    Compiling semver-parser v0.7.0
[INFO] [stderr]    Compiling cairo-rs v0.9.1
[INFO] [stderr]    Compiling gdk v0.13.2
[INFO] [stderr]    Compiling heck v0.3.2
[INFO] [stderr]     Checking static_assertions v1.1.0
[INFO] [stderr]    Compiling atk v0.9.0
[INFO] [stderr]     Checking arrayvec v0.5.2
[INFO] [stderr]    Compiling gtk v0.9.2
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling nom v5.1.2
[INFO] [stderr]    Compiling semver v0.9.0
[INFO] [stderr]    Compiling unicase v2.6.0
[INFO] [stderr]    Compiling whoami v1.1.2
[INFO] [stderr]     Checking convert_case v0.4.0
[INFO] [stderr]     Checking mime v0.3.16
[INFO] [stderr]    Compiling quote v1.0.9
[INFO] [stderr]    Compiling rustc_version v0.2.3
[INFO] [stderr]     Checking itertools v0.10.0
[INFO] [stderr]     Checking shell-words v1.0.0
[INFO] [stderr]    Compiling serde_json v1.0.64
[INFO] [stderr]     Checking itoa v0.4.7
[INFO] [stderr]     Checking libloading v0.7.0
[INFO] [stderr]     Checking opener v0.4.1
[INFO] [stderr]     Checking colorsys v0.6.3
[INFO] [stderr]     Checking system_shutdown v3.0.0
[INFO] [stderr]    Compiling scout-core v0.0.1 (/opt/rustwide/workdir/core)
[INFO] [stderr]    Migrating core/build.rs from 2018 edition to 2021
[INFO] [stderr]     Checking dirs-sys v0.3.6
[INFO] [stderr]    Compiling mime_guess v2.0.3
[INFO] [stderr]     Checking dirs v3.0.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.24
[INFO] [stderr]    Compiling strum_macros v0.18.0
[INFO] [stderr]    Compiling futures-macro v0.3.14
[INFO] [stderr]     Checking futures-util v0.3.14
[INFO] [stderr]    Compiling thiserror v1.0.24
[INFO] [stderr]     Checking freedesktop_entry_parser v1.1.2
[INFO] [stderr]     Checking futures-executor v0.3.14
[INFO] [stderr]     Checking futures v0.3.14
[INFO] [stderr]    Compiling toml v0.5.8
[INFO] [stderr]    Compiling system-deps v1.3.2
[INFO] [stderr]    Compiling proc-macro-crate v0.1.5
[INFO] [stderr]    Compiling glib-macros v0.10.1
[INFO] [stderr]    Compiling glib-sys v0.10.1
[INFO] [stderr]    Compiling gobject-sys v0.10.0
[INFO] [stderr]    Compiling gio-sys v0.10.1
[INFO] [stderr]    Compiling pango-sys v0.10.0
[INFO] [stderr]    Compiling gdk-pixbuf-sys v0.10.0
[INFO] [stderr]    Compiling cairo-sys-rs v0.10.0
[INFO] [stderr]    Compiling gdk-sys v0.10.0
[INFO] [stderr]    Compiling atk-sys v0.10.0
[INFO] [stderr]    Compiling gtk-sys v0.10.0
[INFO] [stderr]     Checking glib v0.10.3
[INFO] [stderr]    Migrating core/src/lib.rs from 2018 edition to 2021
[INFO] [stderr]     Checking scout v0.0.1 (/opt/rustwide/workdir/app)
[INFO] [stderr]     Checking scout_plugin_directory v0.0.1 (/opt/rustwide/workdir/plugins/directory)
[INFO] [stderr]     Checking scout_plugin_application v0.0.1 (/opt/rustwide/workdir/plugins/application)
[INFO] [stderr]    Migrating app/src/main.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating plugins/application/src/lib.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating plugins/directory/src/lib.rs from 2018 edition to 2021
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 59.22s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nom v5.1.2
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] [stderr] crater-edition-check: scout-core v0.0.1 (/opt/rustwide/workdir/core) updating edition from 2018 to 2021
[INFO] [stderr] crater-edition-check: scout v0.0.1 (/opt/rustwide/workdir/app) updating edition from 2018 to 2021
[INFO] [stderr] crater-edition-check: scout_plugin_application v0.0.1 (/opt/rustwide/workdir/plugins/application) updating edition from 2018 to 2021
[INFO] [stderr] crater-edition-check: scout_plugin_directory v0.0.1 (/opt/rustwide/workdir/plugins/directory) updating edition from 2018 to 2021
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr]    Compiling scout-core v0.0.1 (/opt/rustwide/workdir/core)
[INFO] [stdout] warning: `extern` fn uses type `Shared<std::boxed::Box<dyn PluginBindings>>`, which is not FFI-safe
[INFO] [stdout]   --> core/src/lib.rs:58:16
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub register: unsafe extern "C" fn(Shared<Box<dyn PluginBindings>>),
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct
[INFO] [stdout]    = note: this struct has unspecified layout
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> core/src/shared.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Shared<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(improper_ctypes_definitions)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> core/src/shared.rs:38:16
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn borrow(&self) -> Ref<T> {
[INFO] [stdout]    |                   ^^^^^     ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                   |
[INFO] [stdout]    |                   the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn borrow(&self) -> Ref<'_, T> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> core/src/shared.rs:75:20
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn borrow_mut(&self) -> RefMut<T> {
[INFO] [stdout]    |                       ^^^^^     ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn borrow_mut(&self) -> RefMut<'_, T> {
[INFO] [stdout]    |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> core/src/shared.rs:84:24
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub fn try_borrow_mut(&self) -> Result<RefMut<T>, BorrowMutError> {
[INFO] [stdout]    |                           ^^^^^            ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub fn try_borrow_mut(&self) -> Result<RefMut<'_, T>, BorrowMutError> {
[INFO] [stdout]    |                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> core/src/shared.rs:119:23
[INFO] [stdout]     |
[INFO] [stdout] 119 |         write!(f, "{}", self.deref())
[INFO] [stdout]     |                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `Shared<T>` does not implement `Deref`, so calling `deref` on `&Shared<T>` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 119 -         write!(f, "{}", self.deref())
[INFO] [stdout] 119 +         write!(f, "{}", self)
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `Shared<T>`, implement `Clone` for it
[INFO] [stdout]     |
[INFO] [stdout]  17 + #[derive(Clone)]
[INFO] [stdout]  18 | pub struct Shared<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> core/src/shared.rs:126:25
[INFO] [stdout]     |
[INFO] [stdout] 126 |         write!(f, "{:?}", self.deref())
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `Shared<T>` does not implement `Deref`, so calling `deref` on `&Shared<T>` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 126 -         write!(f, "{:?}", self.deref())
[INFO] [stdout] 126 +         write!(f, "{:?}", self)
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `Shared<T>`, implement `Clone` for it
[INFO] [stdout]     |
[INFO] [stdout]  17 + #[derive(Clone)]
[INFO] [stdout]  18 | pub struct Shared<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` fn uses type `Shared<std::boxed::Box<dyn PluginBindings>>`, which is not FFI-safe
[INFO] [stdout]   --> core/src/lib.rs:58:16
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub register: unsafe extern "C" fn(Shared<Box<dyn PluginBindings>>),
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct
[INFO] [stdout]    = note: this struct has unspecified layout
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> core/src/shared.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Shared<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(improper_ctypes_definitions)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> core/src/shared.rs:38:16
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn borrow(&self) -> Ref<T> {
[INFO] [stdout]    |                   ^^^^^     ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                   |
[INFO] [stdout]    |                   the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn borrow(&self) -> Ref<'_, T> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> core/src/shared.rs:75:20
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn borrow_mut(&self) -> RefMut<T> {
[INFO] [stdout]    |                       ^^^^^     ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn borrow_mut(&self) -> RefMut<'_, T> {
[INFO] [stdout]    |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> core/src/shared.rs:84:24
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub fn try_borrow_mut(&self) -> Result<RefMut<T>, BorrowMutError> {
[INFO] [stdout]    |                           ^^^^^            ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub fn try_borrow_mut(&self) -> Result<RefMut<'_, T>, BorrowMutError> {
[INFO] [stdout]    |                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> core/src/shared.rs:119:23
[INFO] [stdout]     |
[INFO] [stdout] 119 |         write!(f, "{}", self.deref())
[INFO] [stdout]     |                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `Shared<T>` does not implement `Deref`, so calling `deref` on `&Shared<T>` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 119 -         write!(f, "{}", self.deref())
[INFO] [stdout] 119 +         write!(f, "{}", self)
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `Shared<T>`, implement `Clone` for it
[INFO] [stdout]     |
[INFO] [stdout]  17 + #[derive(Clone)]
[INFO] [stdout]  18 | pub struct Shared<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> core/src/shared.rs:126:25
[INFO] [stdout]     |
[INFO] [stdout] 126 |         write!(f, "{:?}", self.deref())
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `Shared<T>` does not implement `Deref`, so calling `deref` on `&Shared<T>` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 126 -         write!(f, "{:?}", self.deref())
[INFO] [stdout] 126 +         write!(f, "{:?}", self)
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `Shared<T>`, implement `Clone` for it
[INFO] [stdout]     |
[INFO] [stdout]  17 + #[derive(Clone)]
[INFO] [stdout]  18 | pub struct Shared<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking scout v0.0.1 (/opt/rustwide/workdir/app)
[INFO] [stderr]     Checking scout_plugin_directory v0.0.1 (/opt/rustwide/workdir/plugins/directory)
[INFO] [stderr]     Checking scout_plugin_application v0.0.1 (/opt/rustwide/workdir/plugins/application)
[INFO] [stdout] warning: unused import: `prefs_page::*`
[INFO] [stdout]  --> app/src/window/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use prefs_page::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `about::*`
[INFO] [stdout]   --> app/src/window/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use about::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prefs::*`
[INFO] [stdout]   --> app/src/window/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use prefs::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `plugin_bindings::*`
[INFO] [stdout]  --> app/src/plugin/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use plugin_bindings::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prefs_page::*`
[INFO] [stdout]  --> app/src/window/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use prefs_page::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `about::*`
[INFO] [stdout]   --> app/src/window/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use about::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prefs::*`
[INFO] [stdout]   --> app/src/window/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use prefs::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `plugin_bindings::*`
[INFO] [stdout]  --> app/src/plugin/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use plugin_bindings::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `bindings` is never read
[INFO] [stdout]  --> plugins/directory/src/lib.rs:9:2
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct DirectoryPlugin {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 9 |     bindings: Shared<Box<dyn PluginBindings>>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `icon` and `path_str` are never read
[INFO] [stdout]   --> plugins/directory/src/result.rs:14:2
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct DirectoryResult {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 14 |     icon: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     path_str: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DirectoryResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `bindings` is never read
[INFO] [stdout]   --> plugins/application/src/lib.rs:13:2
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ApplicationPlugin {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 13 |     bindings: Shared<Box<dyn PluginBindings>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `actions` is never read
[INFO] [stdout]   --> plugins/application/src/result.rs:52:2
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct ApplicationResult {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 52 |     actions: Option<Vec<Action>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ApplicationResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> app/src/window/window.rs:369:3
[INFO] [stdout]     |
[INFO] [stdout] 369 |         drop(self);
[INFO] [stdout]     |         ^^^^^----^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              argument has type `&mut window::window::Window`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 369 -         drop(self);
[INFO] [stdout] 369 +         let _ = self;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `exec` that must be used
[INFO] [stdout]   --> app/src/window/prefs.rs:56:6
[INFO] [stdout]    |
[INFO] [stdout] 56 |         std::process::Command::new("/proc/self/exe").exec();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 56 |         let _ = std::process::Command::new("/proc/self/exe").exec();
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `bindings` is never read
[INFO] [stdout]  --> plugins/directory/src/lib.rs:9:2
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct DirectoryPlugin {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 9 |     bindings: Shared<Box<dyn PluginBindings>>,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `icon` and `path_str` are never read
[INFO] [stdout]   --> plugins/directory/src/result.rs:14:2
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct DirectoryResult {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 14 |     icon: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     path_str: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DirectoryResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `bindings` is never read
[INFO] [stdout]   --> plugins/application/src/lib.rs:13:2
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ApplicationPlugin {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 13 |     bindings: Shared<Box<dyn PluginBindings>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `actions` is never read
[INFO] [stdout]   --> plugins/application/src/result.rs:52:2
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct ApplicationResult {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 52 |     actions: Option<Vec<Action>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ApplicationResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> app/src/window/window.rs:369:3
[INFO] [stdout]     |
[INFO] [stdout] 369 |         drop(self);
[INFO] [stdout]     |         ^^^^^----^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              argument has type `&mut window::window::Window`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 369 -         drop(self);
[INFO] [stdout] 369 +         let _ = self;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `exec` that must be used
[INFO] [stdout]   --> app/src/window/prefs.rs:56:6
[INFO] [stdout]    |
[INFO] [stdout] 56 |         std::process::Command::new("/proc/self/exe").exec();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 56 |         let _ = std::process::Command::new("/proc/self/exe").exec();
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 00s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nom v5.1.2
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating core/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating app/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating plugins/application/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating plugins/directory/Cargo.toml from 2018 edition to 2021
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stdout] warning: `extern` fn uses type `Shared<std::boxed::Box<dyn PluginBindings>>`, which is not FFI-safe
[INFO] [stdout]   --> core/src/lib.rs:58:16
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub register: unsafe extern "C" fn(Shared<Box<dyn PluginBindings>>),
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct
[INFO] [stdout]    = note: this struct has unspecified layout
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> core/src/shared.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Shared<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(improper_ctypes_definitions)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> core/src/shared.rs:38:16
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn borrow(&self) -> Ref<T> {
[INFO] [stdout]    |                   ^^^^^     ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                   |
[INFO] [stdout]    |                   the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn borrow(&self) -> Ref<'_, T> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking scout-core v0.0.1 (/opt/rustwide/workdir/core)
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> core/src/shared.rs:75:20
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn borrow_mut(&self) -> RefMut<T> {
[INFO] [stdout]    |                       ^^^^^     ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn borrow_mut(&self) -> RefMut<'_, T> {
[INFO] [stdout]    |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking scout v0.0.1 (/opt/rustwide/workdir/app)
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> core/src/shared.rs:84:24
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub fn try_borrow_mut(&self) -> Result<RefMut<T>, BorrowMutError> {
[INFO] [stdout]    |                           ^^^^^            ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub fn try_borrow_mut(&self) -> Result<RefMut<'_, T>, BorrowMutError> {
[INFO] [stdout]    |                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking scout_plugin_directory v0.0.1 (/opt/rustwide/workdir/plugins/directory)
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> core/src/shared.rs:119:23
[INFO] [stdout]     |
[INFO] [stdout] 119 |         write!(f, "{}", self.deref())
[INFO] [stdout]     |                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `Shared<T>` does not implement `Deref`, so calling `deref` on `&Shared<T>` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 119 -         write!(f, "{}", self.deref())
[INFO] [stdout] 119 +         write!(f, "{}", self)
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `Shared<T>`, implement `Clone` for it
[INFO] [stdout]     |
[INFO] [stdout]  17 + #[derive(Clone)]
[INFO] [stdout]  18 | pub struct Shared<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> core/src/shared.rs:126:25
[INFO] [stdout]     |
[INFO] [stdout] 126 |         write!(f, "{:?}", self.deref())
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `Shared<T>` does not implement `Deref`, so calling `deref` on `&Shared<T>` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 126 -         write!(f, "{:?}", self.deref())
[INFO] [stdout] 126 +         write!(f, "{:?}", self)
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `Shared<T>`, implement `Clone` for it
[INFO] [stdout]     |
[INFO] [stdout]  17 + #[derive(Clone)]
[INFO] [stdout]  18 | pub struct Shared<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking scout_plugin_application v0.0.1 (/opt/rustwide/workdir/plugins/application)
[INFO] [stderr]    Migrating core/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed core/src/lib.rs (2 fixes)
[INFO] [stderr]    Migrating app/src/main.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed app/src/window/window.rs (1 fix)
[INFO] [stderr]    Migrating plugins/directory/src/lib.rs from 2021 edition to 2024
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> app/src/window/window.rs:330:10
[INFO] [stdout]     |
[INFO] [stdout] 329 | ...       let screen = window.get_screen().unwrap();
[INFO] [stdout]     |               ------
[INFO] [stdout]     |               |
[INFO] [stdout]     |               `screen` calls a custom destructor
[INFO] [stdout]     |               `screen` will be dropped later as of Edition 2024
[INFO] [stdout] 330 | ...       match screen.get_rgba_visual() { Some(ref visual) => { window.set_visual(Some(visual)); } _ => { println!("RGBA missing."...
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                 up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 331 | ...   }
[INFO] [stdout]     |       - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.10.3/src/object.rs:418:1
[INFO] [stdout]     |
[INFO] [stdout] 418 | impl Drop for ObjectRef {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `screen` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.10.3/src/object.rs:418:1
[INFO] [stdout]     |
[INFO] [stdout] 418 | impl Drop for ObjectRef {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> app/src/window/about.rs:18:23
[INFO] [stdout]     |
[INFO] [stdout]  17 |     for child in titlebar.get_children() {
[INFO] [stdout]     |                  -----------------------
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                  `#1` will be dropped later as of Edition 2024
[INFO] [stdout]  18 |         if let Ok(button) = child.downcast::<gtk::Button>() { titlebar.remove(&button); }
[INFO] [stdout]     |                   ------    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                   |         |
[INFO] [stdout]     |                   |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                   |         up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                   `button` calls a custom destructor
[INFO] [stdout]     |                   `button` will be dropped later as of Edition 2024
[INFO] [stdout]  19 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.10.3/src/object.rs:418:1
[INFO] [stdout]     |
[INFO] [stdout] 418 | impl Drop for ObjectRef {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.10.3/src/object.rs:418:1
[INFO] [stdout]     |
[INFO] [stdout] 418 | impl Drop for ObjectRef {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `button` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.10.3/src/object.rs:418:1
[INFO] [stdout]     |
[INFO] [stdout] 418 | impl Drop for ObjectRef {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> app/src/plugin/plugin_parser.rs:41:10
[INFO] [stdout]     |
[INFO] [stdout]  26 |             let library = Rc::new(libloading::Library::new(library_path)
[INFO] [stdout]     |                 -------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `library` calls a custom destructor
[INFO] [stdout]     |                 `library` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  35 |             let bindings: Shared<Box<dyn scout_core::PluginBindings>> =
[INFO] [stdout]     |                 --------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `bindings` calls a custom destructor
[INFO] [stdout]     |                 `bindings` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  40 |             let bindings_borrow = bindings.borrow();
[INFO] [stdout]     |                 ---------------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `bindings_borrow` calls a custom destructor
[INFO] [stdout]     |                 `bindings_borrow` will be dropped later as of Edition 2024
[INFO] [stdout]  41 |             match bindings_borrow.get_plugin() {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                   up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  55 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `library` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/libloading-0.7.0/src/os/unix/mod.rs:344:1
[INFO] [stdout]     |
[INFO] [stdout] 344 | impl Drop for Library {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `bindings` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `bindings_borrow` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:1582:0
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> app/src/window/window.rs:330:10
[INFO] [stdout]     |
[INFO] [stdout] 329 | ...       let screen = window.get_screen().unwrap();
[INFO] [stdout]     |               ------
[INFO] [stdout]     |               |
[INFO] [stdout]     |               `screen` calls a custom destructor
[INFO] [stdout]     |               `screen` will be dropped later as of Edition 2024
[INFO] [stdout] 330 | ...       match screen.get_rgba_visual() { Some(ref visual) => { window.set_visual(Some(visual)); } _ => { println!("RGBA missing."...
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                 up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 331 | ...   }
[INFO] [stdout]     |       - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.10.3/src/object.rs:418:1
[INFO] [stdout]     |
[INFO] [stdout] 418 | impl Drop for ObjectRef {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `screen` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.10.3/src/object.rs:418:1
[INFO] [stdout]     |
[INFO] [stdout] 418 | impl Drop for ObjectRef {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> app/src/window/about.rs:18:23
[INFO] [stdout]     |
[INFO] [stdout]  17 |     for child in titlebar.get_children() {
[INFO] [stdout]     |                  -----------------------
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                  `#1` will be dropped later as of Edition 2024
[INFO] [stdout]  18 |         if let Ok(button) = child.downcast::<gtk::Button>() { titlebar.remove(&button); }
[INFO] [stdout]     |                   ------    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                   |         |
[INFO] [stdout]     |                   |         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                   |         up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                   `button` calls a custom destructor
[INFO] [stdout]     |                   `button` will be dropped later as of Edition 2024
[INFO] [stdout]  19 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.10.3/src/object.rs:418:1
[INFO] [stdout]     |
[INFO] [stdout] 418 | impl Drop for ObjectRef {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.10.3/src/object.rs:418:1
[INFO] [stdout]     |
[INFO] [stdout] 418 | impl Drop for ObjectRef {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `button` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.10.3/src/object.rs:418:1
[INFO] [stdout]     |
[INFO] [stdout] 418 | impl Drop for ObjectRef {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating plugins/application/src/lib.rs from 2021 edition to 2024
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> app/src/plugin/plugin_parser.rs:41:10
[INFO] [stdout]     |
[INFO] [stdout]  26 |             let library = Rc::new(libloading::Library::new(library_path)
[INFO] [stdout]     |                 -------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `library` calls a custom destructor
[INFO] [stdout]     |                 `library` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  35 |             let bindings: Shared<Box<dyn scout_core::PluginBindings>> =
[INFO] [stdout]     |                 --------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `bindings` calls a custom destructor
[INFO] [stdout]     |                 `bindings` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  40 |             let bindings_borrow = bindings.borrow();
[INFO] [stdout]     |                 ---------------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `bindings_borrow` calls a custom destructor
[INFO] [stdout]     |                 `bindings_borrow` will be dropped later as of Edition 2024
[INFO] [stdout]  41 |             match bindings_borrow.get_plugin() {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                   up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  55 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `library` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/libloading-0.7.0/src/os/unix/mod.rs:344:1
[INFO] [stdout]     |
[INFO] [stdout] 344 | impl Drop for Library {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `bindings` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `bindings_borrow` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:1582:0
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> plugins/application/src/result.rs:94:33
[INFO] [stdout]     |
[INFO] [stdout]  88 |         let theme = gtk::IconTheme::get_default().unwrap();
[INFO] [stdout]     |             -----
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `theme` calls a custom destructor
[INFO] [stdout]     |             `theme` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  94 |         gtk::Image::from_pixbuf(Some(&find_from_file().unwrap_or_else(|_| find_in_theme().unwrap_or_else(|_| find_default()))))
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                       up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  95 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.10.3/src/object.rs:418:1
[INFO] [stdout]     |
[INFO] [stdout] 418 | impl Drop for ObjectRef {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `theme` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.10.3/src/object.rs:418:1
[INFO] [stdout]     |
[INFO] [stdout] 418 | impl Drop for ObjectRef {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> plugins/application/src/result.rs:94:33
[INFO] [stdout]     |
[INFO] [stdout]  88 |         let theme = gtk::IconTheme::get_default().unwrap();
[INFO] [stdout]     |             -----
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `theme` calls a custom destructor
[INFO] [stdout]     |             `theme` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  94 |         gtk::Image::from_pixbuf(Some(&find_from_file().unwrap_or_else(|_| find_in_theme().unwrap_or_else(|_| find_default()))))
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                       up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  95 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.10.3/src/object.rs:418:1
[INFO] [stdout]     |
[INFO] [stdout] 418 | impl Drop for ObjectRef {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `theme` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/glib-0.10.3/src/object.rs:418:1
[INFO] [stdout]     |
[INFO] [stdout] 418 | impl Drop for ObjectRef {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 02s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nom v5.1.2
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] [stderr] crater-edition-check: scout-core v0.0.1 (/opt/rustwide/workdir/core) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: scout v0.0.1 (/opt/rustwide/workdir/app) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: scout_plugin_application v0.0.1 (/opt/rustwide/workdir/plugins/application) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: scout_plugin_directory v0.0.1 (/opt/rustwide/workdir/plugins/directory) updating edition from 2021 to 2024
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2024 which implies `resolver = "3"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2024 resolver, specify `workspace.resolver = "3"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr]    Compiling scout-core v0.0.1 (/opt/rustwide/workdir/core)
[INFO] [stdout] warning: `extern` fn uses type `Shared<std::boxed::Box<dyn PluginBindings>>`, which is not FFI-safe
[INFO] [stdout]   --> core/src/lib.rs:58:16
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub register: unsafe extern "C" fn(Shared<Box<dyn PluginBindings>>),
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct
[INFO] [stdout]    = note: this struct has unspecified layout
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> core/src/shared.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Shared<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(improper_ctypes_definitions)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> core/src/shared.rs:38:16
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn borrow(&self) -> Ref<T> {
[INFO] [stdout]    |                   ^^^^^     ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                   |
[INFO] [stdout]    |                   the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn borrow(&self) -> Ref<'_, T> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> core/src/shared.rs:75:20
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn borrow_mut(&self) -> RefMut<T> {
[INFO] [stdout]    |                       ^^^^^     ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn borrow_mut(&self) -> RefMut<'_, T> {
[INFO] [stdout]    |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> core/src/shared.rs:84:24
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub fn try_borrow_mut(&self) -> Result<RefMut<T>, BorrowMutError> {
[INFO] [stdout]    |                           ^^^^^            ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub fn try_borrow_mut(&self) -> Result<RefMut<'_, T>, BorrowMutError> {
[INFO] [stdout]    |                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> core/src/shared.rs:119:23
[INFO] [stdout]     |
[INFO] [stdout] 119 |         write!(f, "{}", self.deref())
[INFO] [stdout]     |                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `Shared<T>` does not implement `Deref`, so calling `deref` on `&Shared<T>` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 119 -         write!(f, "{}", self.deref())
[INFO] [stdout] 119 +         write!(f, "{}", self)
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `Shared<T>`, implement `Clone` for it
[INFO] [stdout]     |
[INFO] [stdout]  17 + #[derive(Clone)]
[INFO] [stdout]  18 | pub struct Shared<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> core/src/shared.rs:126:25
[INFO] [stdout]     |
[INFO] [stdout] 126 |         write!(f, "{:?}", self.deref())
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `Shared<T>` does not implement `Deref`, so calling `deref` on `&Shared<T>` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 126 -         write!(f, "{:?}", self.deref())
[INFO] [stdout] 126 +         write!(f, "{:?}", self)
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `Shared<T>`, implement `Clone` for it
[INFO] [stdout]     |
[INFO] [stdout]  17 + #[derive(Clone)]
[INFO] [stdout]  18 | pub struct Shared<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` fn uses type `Shared<std::boxed::Box<dyn PluginBindings>>`, which is not FFI-safe
[INFO] [stdout]   --> core/src/lib.rs:58:16
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub register: unsafe extern "C" fn(Shared<Box<dyn PluginBindings>>),
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct
[INFO] [stdout]    = note: this struct has unspecified layout
[INFO] [stdout] note: the type is defined here
[INFO] [stdout]   --> core/src/shared.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Shared<T> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(improper_ctypes_definitions)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> core/src/shared.rs:38:16
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn borrow(&self) -> Ref<T> {
[INFO] [stdout]    |                   ^^^^^     ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                   |
[INFO] [stdout]    |                   the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn borrow(&self) -> Ref<'_, T> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> core/src/shared.rs:75:20
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn borrow_mut(&self) -> RefMut<T> {
[INFO] [stdout]    |                       ^^^^^     ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn borrow_mut(&self) -> RefMut<'_, T> {
[INFO] [stdout]    |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> core/src/shared.rs:84:24
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub fn try_borrow_mut(&self) -> Result<RefMut<T>, BorrowMutError> {
[INFO] [stdout]    |                           ^^^^^            ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub fn try_borrow_mut(&self) -> Result<RefMut<'_, T>, BorrowMutError> {
[INFO] [stdout]    |                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> core/src/shared.rs:119:23
[INFO] [stdout]     |
[INFO] [stdout] 119 |         write!(f, "{}", self.deref())
[INFO] [stdout]     |                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `Shared<T>` does not implement `Deref`, so calling `deref` on `&Shared<T>` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 119 -         write!(f, "{}", self.deref())
[INFO] [stdout] 119 +         write!(f, "{}", self)
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `Shared<T>`, implement `Clone` for it
[INFO] [stdout]     |
[INFO] [stdout]  17 + #[derive(Clone)]
[INFO] [stdout]  18 | pub struct Shared<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.deref()` on a reference in this situation does nothing
[INFO] [stdout]    --> core/src/shared.rs:126:25
[INFO] [stdout]     |
[INFO] [stdout] 126 |         write!(f, "{:?}", self.deref())
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `Shared<T>` does not implement `Deref`, so calling `deref` on `&Shared<T>` copies the reference, which does not do anything and can be removed
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 126 -         write!(f, "{:?}", self.deref())
[INFO] [stdout] 126 +         write!(f, "{:?}", self)
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `Shared<T>`, implement `Clone` for it
[INFO] [stdout]     |
[INFO] [stdout]  17 + #[derive(Clone)]
[INFO] [stdout]  18 | pub struct Shared<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking scout_plugin_directory v0.0.1 (/opt/rustwide/workdir/plugins/directory)
[INFO] [stderr]     Checking scout_plugin_application v0.0.1 (/opt/rustwide/workdir/plugins/application)
[INFO] [stderr]     Checking scout v0.0.1 (/opt/rustwide/workdir/app)
[INFO] [stdout] error: unsafe attribute used without unsafe
[INFO] [stdout]    --> plugins/application/src/lib.rs:113:1
[INFO] [stdout]     |
[INFO] [stdout] 113 | scout_core::export_plugin!(register);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ usage of unsafe attribute
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `scout_core::export_plugin` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: wrap the attribute in `unsafe(...)`
[INFO] [stdout]    --> core/src/lib.rs:76:5
[INFO] [stdout]     |
[INFO] [stdout]  76 |         #[unsafe(no_mangle)]
[INFO] [stdout]     |           +++++++         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unsafe attribute used without unsafe
[INFO] [stdout]   --> plugins/directory/src/lib.rs:75:1
[INFO] [stdout]    |
[INFO] [stdout] 75 | core::export_plugin!(register);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ usage of unsafe attribute
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `core::export_plugin` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: wrap the attribute in `unsafe(...)`
[INFO] [stdout]   --> core/src/lib.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 76 |         #[unsafe(no_mangle)]
[INFO] [stdout]    |           +++++++         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unsafe attribute used without unsafe
[INFO] [stdout]   --> plugins/directory/src/lib.rs:75:1
[INFO] [stdout]    |
[INFO] [stdout] 75 | core::export_plugin!(register);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ usage of unsafe attribute
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `core::export_plugin` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: wrap the attribute in `unsafe(...)`
[INFO] [stdout]   --> core/src/lib.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 76 |         #[unsafe(no_mangle)]
[INFO] [stdout]    |           +++++++         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unsafe attribute used without unsafe
[INFO] [stdout]    --> plugins/application/src/lib.rs:113:1
[INFO] [stdout]     |
[INFO] [stdout] 113 | scout_core::export_plugin!(register);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ usage of unsafe attribute
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `scout_core::export_plugin` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: wrap the attribute in `unsafe(...)`
[INFO] [stdout]    --> core/src/lib.rs:76:5
[INFO] [stdout]     |
[INFO] [stdout]  76 |         #[unsafe(no_mangle)]
[INFO] [stdout]     |           +++++++         +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `scout_plugin_application` (lib) due to 1 previous error
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `scout_plugin_directory` (lib) due to 1 previous error
[INFO] [stdout] warning: unused import: `prefs_page::*`
[INFO] [stdout]  --> app/src/window/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use prefs_page::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `about::*`
[INFO] [stdout]   --> app/src/window/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use about::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prefs::*`
[INFO] [stdout]   --> app/src/window/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use prefs::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `plugin_bindings::*`
[INFO] [stdout]  --> app/src/plugin/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use plugin_bindings::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `scout_plugin_application` (lib test) due to 1 previous error
[INFO] [stderr] error: could not compile `scout_plugin_directory` (lib test) due to 1 previous error
[INFO] [stdout] warning: unused import: `prefs_page::*`
[INFO] [stdout]  --> app/src/window/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use prefs_page::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `about::*`
[INFO] [stdout]   --> app/src/window/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use about::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prefs::*`
[INFO] [stdout]   --> app/src/window/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use prefs::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `plugin_bindings::*`
[INFO] [stdout]  --> app/src/plugin/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use plugin_bindings::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> app/src/window/window.rs:368:3
[INFO] [stdout]     |
[INFO] [stdout] 368 |         drop(self);
[INFO] [stdout]     |         ^^^^^----^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              argument has type `&mut window::window::Window`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 368 -         drop(self);
[INFO] [stdout] 368 +         let _ = self;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `exec` that must be used
[INFO] [stdout]   --> app/src/window/prefs.rs:56:6
[INFO] [stdout]    |
[INFO] [stdout] 56 |         std::process::Command::new("/proc/self/exe").exec();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 56 |         let _ = std::process::Command::new("/proc/self/exe").exec();
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> app/src/window/window.rs:368:3
[INFO] [stdout]     |
[INFO] [stdout] 368 |         drop(self);
[INFO] [stdout]     |         ^^^^^----^
[INFO] [stdout]     |              |
[INFO] [stdout]     |              argument has type `&mut window::window::Window`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 368 -         drop(self);
[INFO] [stdout] 368 +         let _ = self;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `exec` that must be used
[INFO] [stdout]   --> app/src/window/prefs.rs:56:6
[INFO] [stdout]    |
[INFO] [stdout] 56 |         std::process::Command::new("/proc/self/exe").exec();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 56 |         let _ = std::process::Command::new("/proc/self/exe").exec();
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "b1dc48ed9a2286378993c8c35b15d3c27c74806181e9cae1e7a4c1730be6c6f3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b1dc48ed9a2286378993c8c35b15d3c27c74806181e9cae1e7a4c1730be6c6f3", kill_on_drop: false }`
[INFO] [stdout] b1dc48ed9a2286378993c8c35b15d3c27c74806181e9cae1e7a4c1730be6c6f3
